package com.example.zhilierp.constant;

/**
 * 系统常量类
 * 统一管理系统中的常量
 */
public class SystemConstant {

    /**
     * 状态常量
     */
    public static class Status {
        /** 启用状态 */
        public static final Integer ENABLE = 1;
        /** 禁用状态 */
        public static final Integer DISABLE = 0;
    }

    /**
     * 删除标记常量
     */
    public static class DelFlag {
        /** 未删除 */
        public static final Integer NOT_DELETED = 0;
        /** 已删除 */
        public static final Integer DELETED = 1;
    }

    /**
     * 权限类型常量
     */
    public static class PermissionType {
        /** 目录 */
        public static final Integer CATALOG = 0;
        /** 菜单 */
        public static final Integer MENU = 1;
        /** 按钮 */
        public static final Integer BUTTON = 2;
    }

    /**
     * 数据范围常量
     */
    public static class DataScope {
        /** 全部数据权限 */
        public static final Integer ALL = 1;
        /** 自定数据权限 */
        public static final Integer CUSTOM = 2;
        /** 本部门数据权限 */
        public static final Integer DEPT = 3;
        /** 本部门及以下数据权限 */
        public static final Integer DEPT_AND_CHILD = 4;
        /** 仅本人数据权限 */
        public static final Integer SELF = 5;
    }

    /**
     * 角色类型常量
     */
    public static class RoleType {
        /** 超级管理员 */
        public static final String ADMIN = "admin";
        /** 普通角色 */
        public static final String NORMAL = "normal";
    }

    /**
     * 系统默认值常量
     */
    public static class DefaultValue {
        /** 默认分页大小 */
        public static final Integer PAGE_SIZE = 10;
        /** 默认页码 */
        public static final Integer PAGE_NUM = 1;
        /** 根节点ID */
        public static final Long ROOT_ID = 0L;
    }

    /**
     * 缓存常量
     */
    public static class Cache {
        /** 缓存过期时间(秒) */
        public static final Integer EXPIRE_TIME = 3600;
        /** 用户缓存前缀 */
        public static final String USER_CACHE_PREFIX = "sys:user:";
        /** 角色缓存前缀 */
        public static final String ROLE_CACHE_PREFIX = "sys:role:";
        /** 权限缓存前缀 */
        public static final String PERMISSION_CACHE_PREFIX = "sys:permission:";
        /** 部门缓存前缀 */
        public static final String DEPT_CACHE_PREFIX = "sys:dept:";
    }

    /**
     * 令牌常量
     */
    public static class Token {
        /** 令牌头部 */
        public static final String TOKEN_HEADER = "Authorization";
        /** 令牌前缀 */
        public static final String TOKEN_PREFIX = "Bearer ";
        /** 令牌过期时间(毫秒) */
        public static final Long EXPIRE_TIME = 7200000L;
    }

    /**
     * 系统日志常量
     */
    public static class Log {
        /** 操作类型 - 新增 */
        public static final String OPERATE_TYPE_ADD = "新增";
        /** 操作类型 - 修改 */
        public static final String OPERATE_TYPE_UPDATE = "修改";
        /** 操作类型 - 删除 */
        public static final String OPERATE_TYPE_DELETE = "删除";
        /** 操作类型 - 查询 */
        public static final String OPERATE_TYPE_QUERY = "查询";
        /** 操作类型 - 导入 */
        public static final String OPERATE_TYPE_IMPORT = "导入";
        /** 操作类型 - 导出 */
        public static final String OPERATE_TYPE_EXPORT = "导出";
        /** 操作类型 - 登录 */
        public static final String OPERATE_TYPE_LOGIN = "登录";
        /** 操作类型 - 登出 */
        public static final String OPERATE_TYPE_LOGOUT = "登出";
    }

    /**
     * 响应码常量
     */
    public static class ResponseCode {
        /** 成功 */
        public static final Integer SUCCESS = 200;
        /** 失败 */
        public static final Integer ERROR = 500;
        /** 未授权 */
        public static final Integer UNAUTHORIZED = 401;
        /** 禁止访问 */
        public static final Integer FORBIDDEN = 403;
        /** 资源不存在 */
        public static final Integer NOT_FOUND = 404;
        /** 请求参数错误 */
        public static final Integer BAD_REQUEST = 400;
    }
}